package com.wiwf.model.task.service;

import com.wiwf.model.task.bean.TaskerCommand;

import java.io.IOException;

/**
 * 命令执行接口
 *
 * @author kehui
 */
public interface TaskExecService {

    /**
     * 执行
     * @param command 命令
     * @return 进程
     * @throws IOException IO异常
     */
    Process exec(String command) throws IOException;

    /**
     * 停止
     * @param process 进程
     * @return 结果
     */
    Boolean stop(Process process);

    /**
     * 停止
     * @param outHandler 线程
     * @return 结果
     */
    Boolean stop(Thread outHandler);

    /**
     * 停止 tasker
     * @param tasker 命令任务
     */
    void stopTasker(TaskerCommand tasker);

    /**
     * 创建 tasker
     * @param id 编号
     * @param command 命令
     * @param ohm 输出处理程序方法
     * @return 命令任务
     */
    TaskerCommand createTasker(String id, String command, TaskOutHandlerService ohm) throws IOException;

}
